鐵道工招募條件:
•熟悉指令介面操作
•具程式設計知識:Ruby、Rake
•具網頁前端知識:HTML、CSS、JavaScript
•具資料庫知識:RMDBS、SQL
若符合以上應徵條件,恭喜您歡迎進入簡單、易用又好學的Rails世界。
工作指南:
開發環境
你可以選擇RadRails或RubyMine,如果你個人偏好使用IDE,也有其他輕量級編輯器選擇:TextMate、SublimeText、[Vim]
終端機
Unix-like作業系統可以跳過此部分,如果你用的是OSX推薦使用iTerm2,Windows上建議安裝RailsInstaller預設環境,或者使用虛擬機如VMWare或VirtualBox模擬Unix-like。
瀏覽器
Chrome、Firefox、Safari、IE都有提供內建的開發者工具值得學習使用,例如模擬手機瀏覽、JavaScript中斷點、程式碼優化與分析、所見即所得CSS修改等。
新手鐵道工Q&A:
Ruby就是Rails嗎?
Ruby與Rails是兩樣東西,且它們除了定位截然不同、作者也不同(國籍差很多),Ruby是程式語言,Rails則是由Ruby撰寫的網站開發框架。
rbenv與RVM哪個好?
他們兩者都是為了解決特定的問題,用了不同的方法而生的不同的工具。如果你想要簡潔的解決方案,使用rbenv,如果你想要更多功能,用RVM也不錯。
Production環境適合安裝rbenv或RVM一類的Ruby版本控制工具嗎?
不建議這麼做,版本控制主要是為了讓我們在staging環境或本地開發時,可以方便切換版本以利進行各種測試,除非你真的清楚自己在做什麼。
鐵道工的工作哲學:
•不要重複你自己(Don’tRepeatYourself)
旨在軟體開發中,減少重複的信息與程式碼。這可以幫助你的專案更易於維護與擴展,人說樹大必有枯枝,程式多就易孳生臭蟲,可以少就不要多。
•慣例優先於設定(ConventionOverConfiguration)
用一些簡單的常規與慣例(convention)來取代繁瑣的設定(configuration),白話解釋是「養好習慣,省下麻煩」,簡化開發的流程與減輕開發者的痛苦。
一位資深鐵道工的經驗談:
這四年來,筆者從Movimpact微電影平台(已停止運作)、腦袋有動工作室(brainana.com)一路到五倍紅寶石股份有限公司(5xruby.tw)的創辦,有趣的是這些單位的名字湊巧都是筆者命名的,偶爾筆者也懷疑到底是隊友寬宏大量,抑或筆者說不定是個命名的天才?
五倍紅寶石是由幾位台灣Ruby社群的朋友共同成立的一家公司,希望透過教育訓練、企業培訓等講座,將Ruby推廣到校園、企業、開發者。提供的服務包括:程式教育訓練、企業技術培訓與諮詢、活動場地租借與專案委托製作。
筆者自五倍紅寶石開業以來主力於RubyonRails的教材編寫、課程設計,並且在校園、公司企業中開設培訓課程。同樣的主題(RubyonRails),也因不同的教授對象而特別設計教材,範圍從高中剛畢業的大一新鮮人,到企業中的工程師。本書也是在這樣的環境下撰寫而成。
從Java到Ruby
至於筆者最後為什麼選擇了Ruby?其實那時寫了Java快4年的時間,曾經陷入其可跨平台、有豐富函示庫與應用的迷湯之中,認為自己可以用Java超越任何事物,然後看到一本書就叫「超越Java:探討程式語言的未來」。如果你對這本書有印象,他的書名掛名Java,實則偷塞Ruby,筆者就這樣上當了。
序的開頭長這樣:
Java已經存在超過十年了,這段時間,它的成就非凡,它徹底改變我們寫軟體的作法和想法。但是Java已顯老態,該是時候了,我們得想想未來接班人是誰。-BruceTate
而筆者就這樣的,從被這樣的序給吸引住,到最後合上書頁後的第一個念頭:「不妨給Ruby一個嘗試吧?」(這本書很不錯的,作者Bruce寫過「輕快的好Java」)
Ruby好快,也好快樂
還記得那時筆者從C跳到了Java,從此有了更多喝茶的時間,這幾年開始寫Ruby,筆者已經有時間種茶葉了。邪神有云:「天下武功,無堅不破,唯快不破」。但論效能之快大概也沒語言快過C與組語了,可是Ruby之快不在此面,而在其彈性與簡潔,適合用於metaprogramming和DSL。動態編程有效的縮短了開發的時間。如果要給Ruby一個評價,筆者認為Ruby就是個什麼都能做的魔法程式語言。希望這本書也能帶給你相同的感受。
本書的撰寫對象為略懂網站前端開發與關聯式資料庫的人,主要專注在Rails的框架介紹與使用,採Ruby2.2與Rails4.2版。這不是一本教授Ruby的書,如果你對Ruby不熟,不建議直接從本書看起。你如果常聽人說Rails簡單、易用又好學,但那其實是建立在使用者已具備許多背景知識的前提下才成立的,這意謂Rails不是新手的玩具。想直接跳過Ruby直接學Rails其實是很可惜的一件事。並不是說非要這些背景知識不可,而是當在沒有背景知識的加持之下,硬去挑戰像Rails這樣複雜的架構,學途可能會非常吃力。而在你閱讀本書以前,建議先確認自己已經具備以下知識:
Q1:http://localhost:3000這段網址所代表的涵義為何?
Q2:以下有一段HTML,解釋method屬性的用途。
Q3:以下HTML會使瀏覽器送出幾次請求?
Q4:用SQL從以下兩張資料表(posts與users)找出Tony的所有文章。
-------------------
| posts資料表 |
-------------------
| id | title |user_id|
-------------------
| 1 | Lorem1 | 2 |
| 2 | Lorem2 | 3 |
| 3 | Lorem3 | 3 |
| 4 | Lorem4 | 1 |
-------------------
------------
| users資料表 |
------------
| id | name |
------------
| 1 | John |
| 2 | Mary |
| 3 | Tony |
| 4 | Jason |
------------
Q5:以下Ruby程式碼,三者間的差異?
{“name“=>“Weihang“,“age“=>24}
{:name=>“Weihang“,:age=>24}
{name:“Weihang“,age:24}
Q6:以下三個Ruby方法的呼叫,各別被傳入的多少個參數?
before_action:set_post
get:about,:contacts,:faq,:sitemap,controller::pages
resources:posts,only:[:index,:create,:update]
以上的答案分別為:
A1協定://主機名稱:閘道
A2method屬性用以決定該表單送出的請求是使用什麼HTTP動詞
A34次:HTML、JS、CSS、圖片
A4SELECT*FROMpostsWHEREuser_id=’3’;
A5後兩者相同且比第一個的寫法效能要好
A61、5、2
如果都能正確對答,表示已經準備好可以開始學習Rails。
若你發現本書讀來吃力,則先從較基礎的書開始著手,加強知識薄弱的部分。
JAVA 資料庫 HTTP 程式碼 RUBYONRAILS 程式語言 RUBY 紅寶石 SQL CSS 企業 HTML RAILS 背景 工具 METHOD 開發 :sitemap :contacts